#pragma once
#include <string>
#include "BaseApplication.h"
#include "World.h"
#include "Robot.h"
#include "RobotExperiment.h"
#include "Trainer.h"

class Game : public BaseApplication
{
private:
	void createScene();
	void createFrameListener();
	bool frameRenderingQueued(const Ogre::FrameEvent& evt);
    bool mousePressed( const OIS::MouseEvent& arg, OIS::MouseButtonID id );
	bool mouseReleased( const OIS::MouseEvent &arg, OIS::MouseButtonID id );
    bool keyPressed( const OIS::KeyEvent &arg );
	void buttonHit(OgreBites::Button* button);
	void shootBox();
	void beginTrain();
	void endTrain();
	void save();
	void load();
	std::auto_ptr<World> world;
	std::auto_ptr<RobotExperiment> experiment;
	std::auto_ptr<Trainer> trainer;
	OgreBites::ParamsPanel* panel;
	bool learning;
};
